package demo3;


class Food {
}

class Fruit extends Food {

}

class Apple extends Fruit {

}

class Banana extends Fruit {

}

class Plate<T> {
    private T plate;

    public T getPlate() {
        return plate;
    }

    public void setPlate(T plate) {
        this.plate = plate;
    }
}

public class Test {
    // 此时使用通配符"?"描述的是它可以接收任意类型，但是由于不确定类型，所以无法修改
    public static void func(Plate<? extends Fruit> temp) {
        System.out.println(temp.getPlate());
        Fruit fruit = temp.getPlate();

        //temp.setMessage(new Apple());
        //此时无法在fun函数中对temp进行添加元素,因为temp接收的是Fruit和他的子类,
        //此时存储的元素应该是哪个子类无法确定。所以添加会报错！但是可以获取元素。
    }

    public static void main(String[] args) {
        Plate<Apple> plate1 = new Plate<>();
        Plate<Banana> plate2 = new Plate<>();
        func(plate1);
        func(plate2);
    }
}
